1. Background and Relevant Art
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing environments.
In many computing environments, services are consolidated amongst a minimal number of server machines to reduce hardware, licensing, and administrative costs. Consolidation can result in services of differing (e.g., lower and higher) priorities running on a single system. Having services of differing priorities correspondingly introduces a need to allocate system resources, such as processing time, system memory, etc., in a prioritized fashion.
One approach is to budget a static amount of resources for lower priority processes. However, if service utilization by higher priority services is variable, it may be difficult to statically predict a reasonable allocation of resources for lower priority processes, leading to inefficiencies. Dynamic allocation of resources for lower priority processes can be used to compensate to some extent. However, when resources are allocated dynamically, a lower priority process may accept too much or too little work relative to a future amount of resources it will later be allocated.
Additionally, when the cost of cancelling partially completed requests is high, a lower-priority service will also have poor resource utilization. For example, after partially performing a request for a lower-priority request it may be determined that sufficient resources to complete the request are not available. As such, the partially performed request can be cancelled. When a partially completed request is cancelled, the resources used to partially complete the request are essentially wasted.